package javawdw.picture.core;

import java.awt.Color;
import java.awt.Font;
import java.io.File;

/**
 * 字体信息类，包括字体，字号，字体类型，字体颜色
 * 
 * @author David
 * 
 */
public class TextStyle {
	private FontStyle fontStyle;
	private int fontSize;
	private File fontFile;
	private Color fontColor;

	/**
	 * 根据字号，字体文件URL，默认颜色(黑色)，默认字体类型(正常)构造字体信息
	 * 
	 * @param fontSize
	 *            给定的字号
	 * @param fontFilePath
	 *            给定的字体文件URL
	 */
	public TextStyle(int fontSize, String fontFilePath) {
		this.fontStyle = FontStyle.NOMAL;
		this.fontColor = Color.BLACK;
		this.fontSize = fontSize;
		this.fontFile = new File(fontFilePath);
	}

	/**
	 * 根据字号，字体文件，默认颜色(黑色)，默认字体类型(正常)构造字体信息
	 * 
	 * @param fontSize
	 *            给定的字号
	 * @param fontFilePath
	 *            给定的字体文件
	 */
	public TextStyle(int fontSize, File fontFile) {
		this.fontStyle = FontStyle.NOMAL;
		this.fontColor = Color.BLACK;
		this.fontSize = fontSize;
		this.fontFile = fontFile;
	}

	/**
	 * 设置字体类型
	 * 
	 * @param fontStyle
	 */
	public void setFontStyle(FontStyle fontStyle) {
		this.fontStyle = fontStyle;
	}

	/**
	 * 设置字号
	 * 
	 * @param fontSize
	 *            给定的字号
	 */
	public void setFontSize(int fontSize) {
		this.fontSize = fontSize;
	}

	/**
	 * 设置字体文件
	 * 
	 * @param fontFile
	 *            给定的字体文件
	 */
	public void setFontFile(File fontFile) {
		this.fontFile = fontFile;
	}

	/**
	 * 获得字体文件
	 * 
	 * @return 返回得到的字体文件
	 */
	public File getFontFile() {
		return this.fontFile;
	}

	/**
	 * 设置字体颜色
	 * 
	 * @param fontColor
	 *            给定的字体颜色
	 */
	public void setFontColor(Color fontColor) {
		this.fontColor = fontColor;
	}

	/**
	 * 获得字体颜色
	 * 
	 * @return 返回得到的字体颜色
	 */
	public Color getFontColor() {
		return fontColor;
	}

	/**
	 * 获得字号
	 * 
	 * @return 返回得到的字号
	 */
	public int getFontSize() {
		return this.fontSize;
	}

	/**
	 * 获得文字的Font信息，包括字号，字体文件，字体类型
	 * 
	 * @return 返回得到的Font信息
	 */
	public Font getFont() {
		Font font = null;
		try {
			font = Font.createFont(Font.TRUETYPE_FONT, this.fontFile);
			font = font.deriveFont((float) this.fontSize);
			font = font.deriveFont(this.fontStyle.getCode());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return font;
	}
}